<?php
	// On prolonge la session
	session_start();

	$id_anim='';
	$code='';
	$message='';

	require_once('../../classes/database.php');
	$idconnect=Database::getInstance();

	//vérification des droits de l'utilisateur
	$querytest = pg_query($idconnect,"SELECT * FROM droit_utilisateur WHERE (id_droit=16 or id_droit=1 )
	and id_user=".$_SESSION['membre_id']);
	$saise_induction = pg_num_rows($querytest);
	if(isset($_SESSION['membre_id']) && $saise_induction != 0){

		// On teste si la variable de session existe et contient une valeur
		if(empty($_SESSION['id_anim'])){
			// Si inexistante ou nulle, on redirige vers le formulaire de login
			header('Location: ../saisie.php');
			exit();
		}
		else{
			$id_anim=$_SESSION['id_anim'];
			$code=$_SESSION['code'];
		}

		// Remplissage de la base de données
		if(!empty($_POST)){
			//vérification que les champs ont bien été remplis
			if($_POST['date']=="none" || $_POST['exp']=="none" || empty($_POST['produit']) || empty($_POST['qte']) || empty($_POST['loc'])){
				$message = 'Veuillez entrer les informations générales du test d\'induction!';
			}
			else{
				$_POST['date'] = htmlspecialchars($_POST['date']);
				$_POST['exp'] = htmlspecialchars($_POST['exp']);
				$_POST['produit'] = htmlspecialchars($_POST['produit']);
				$_POST['qte'] = htmlspecialchars($_POST['qte']);
				$_POST['loc'] = htmlspecialchars($_POST['loc']);
				$_POST['result'] = htmlspecialchars($_POST['result']);

				if(preg_match("#^\d\d\/\d\d\/\d\d\d\d$#",$_POST['date'])){
					
					list($day, $month, $year) = explode("/", $_POST['date']);
					$date = "{$year}-{$month}-{$day}";
					
					//récupération de l'id_type_test
					$query = pg_query($idconnect,"SELECT id_type_test FROM type_test WHERE label LIKE '%Test induction%'");
					$back = pg_fetch_assoc($query);
					$id_type_test = $back['id_type_test'];

					//vérification de l'existance d'un test à cette date avec cet expérimentateur
					$query1 = pg_query($idconnect,"SELECT id_test FROM test  WHERE date_test='".$date."' AND experimentateur='".$_POST['exp']."'
					AND id_type_test=$id_type_test");
					$nb1 = pg_num_rows($query1);
					if($nb1!=0){ // si une date de test avec cet expérimentateur existe déjà
						$back1 = pg_fetch_assoc($query1);
						$id_test = $back1['id_test'];
					}
					else{ //création de test
						$sql = pg_query($idconnect,"INSERT INTO test (id_type_test,date_test,experimentateur) VALUES ($id_type_test,'".$date."',
						'".$_POST['exp']."') RETURNING id_test");
						$insert_row = pg_fetch_row($sql);
						$id_test = $insert_row[0];
					}

					//vérification de l'existance de l'id_res
					$query2 = pg_query($idconnect,"SELECT id_res FROM resultat_test WHERE id_test=$id_test AND id_animal=$id_anim");
					$nb2 = pg_num_rows($query2);
					if($nb2!=0){ //si un id_res existe déjà
						$back2 = pg_fetch_assoc($query2);
						$id_res = $back2['id_res'];
					}
					else{ //création de l'id_res
						$sql = pg_query($idconnect,"INSERT INTO resultat_test (id_test,id_animal) VALUES ($id_test,$id_anim) RETURNING id_res");
						$insert_row = pg_fetch_row($sql);
						$id_res = $insert_row[0];
					}

					//vérification del'existance du test_induction
					$query3 = pg_query($idconnect,"SELECT * FROM test_induction WHERE id_res=$id_res AND produit_injecte='".$_POST['produit']."'");
					$nb3 = pg_num_rows($query3);
					if($nb3!=0){ //si un id_res existe déjà, on update les informations si elles étaient nulles
						$back3 = pg_fetch_assoc($query3);
						$id_res2 = $back3['id_res'];
						if(!($back3['qte_injectee'])){ $sql = pg_query($idconnect,"UPDATE test_induction SET qte_injectee='".$_POST['qte']."' WHERE id_res=$id_res2");}
						if(!($back3['localisation'])){ $sql = pg_query($idconnect,"UPDATE test_induction SET localisation='".$_POST['loc']."' WHERE id_res=$id_res2");}
						if(!($back3['resultat'])){ $sql = pg_query($idconnect,"UPDATE test_induction SET resultat='".$_POST['result']."' WHERE id_res=$id_res2");}
						if($_POST['unite'] == -1) {
							$unite = htmlspecialchars($_POST['newUnite']);
						}
						else {
							$unite = htmlspecialchars($_POST['unite']);
						}
						if(!($unite)){ $sql = pg_query($idconnect,"UPDATE test_induction SET unite='".$_POST['unite']."' WHERE id_res=$id_res2");}
					}
					else{ //création de l'induction
						if($_POST['unite'] == -1) {
							$unite = htmlspecialchars($_POST['newUnite']);
						}
						else {
							$unite = htmlspecialchars($_POST['unite']);
						}
						$sql = pg_query($idconnect,"INSERT INTO test_induction (id_res,produit_injecte,qte_injectee,localisation,resultat,unite)
						VALUES ($id_res,'".$_POST['produit']."','".$_POST['qte']."','".$_POST['loc']."','".$_POST['result']."', '".$unite."') RETURNING id_res");
						$insert_row = pg_fetch_row($sql);
						$id_res2 = $insert_row[0];
					}
					$message .= "Test induction enregistré. ";

					if(isset($_FILES)){
						$extensions = array('.png', '.gif', '.jpg', '.jpeg','.bmp','.tif');
						$date = str_replace('/','.',$_POST['date']);
						$dossier = ROOTPATH."/photos_induction/$date/$id_anim/";

						if(!(is_dir($dossier))){
							if(@mkdir("../../photos_induction/$date/$id_anim",0777,true)){}
							$dossier = "../../photos_induction/$date/$id_anim/";
						}

						foreach($_FILES as $cle){
							$fichier = basename($cle['name']);
							$query4 = pg_query($idconnect,"SELECT id_res FROM photo_induction WHERE photo='$fichier' AND id_res=$id_res2");
							$nb4 = pg_num_rows($query4);
							if($nb4!=0){ $message .= "Photo $fichier déjà enregistrée. "; }
							else{ //création de phot_induction et enregistrement de la photo sur le serveur
								// récupère la partie de la chaine à partir du dernier . pour connaître l'extension.
								$extension = strrchr($cle['name'], '.');
								//Ensuite on teste
								if(!in_array($extension, $extensions)){ //Si l'extension n'est pas dans le tableau
									$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, bmp ou tif';
								}
								if(!isset($erreur)){ //S'il n'y a pas d'erreur, on exécute le script
									if(move_uploaded_file($cle['tmp_name'], $dossier . $fichier)){ //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
										$message .="Photo $fichier enregistrée. ";
										$sql = pg_query($idconnect,"INSERT INTO photo_induction (id_res,photo)	VALUES ($id_res,'$fichier')");
									}
									else{ //Sinon (la fonction renvoie FALSE)
										$message .= "Echec de l'enregistrement de la photo $fichier. ";
									}
								}
							}
						}
					}
				}
				else{ $message.= "Date invalide";}
			}
		}
	}
	else{
		header('Location: ../../site.php');
		exit();
	}
?>

<!DOCTYPE html>
<html>
	<head>
        <meta charset="utf-8" />
        <link rel="stylesheet" href="../../style.css" />
		<!--[if lt IE 9]>
        <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
        <!--[if lte IE 7]>
        <link rel="stylesheet" href="../../style_ie.css" />
        <![endif]-->
        <title>Base de données microcèbes</title>

		<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
        <script>window.jQuery || document.write('<script src="../../js/jquery.min.js"><\/script>')</script>
        <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
		<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
		<script src="../../js/date_picker.js"></script>
		<script src="../../js/verif_form.js"></script>
        <script>
		var num=1;
        $(document).ready(function(){
			//Fonction qui permet d'afficher le nombre de champ par rapport au nombre de photo
			$("#bouton1").click(function () {
				$("<label/>").append("Photo:").attr("class","label3").insertBefore("#bouton1");
				$("<input/>").attr({class : "box", name : "fichierp"+num, type : "file", }).insertBefore("#bouton1");
				$("<span/>").append("* Charger un fichier au format .jpg, .bmp, .jpeg ou .png").attr({class : "code3", id : "erreur_fichierp"+num, type : "file", }).insertBefore("#bouton1").after("<br/>");
				$("#nombre_p").val(num);
				num++;
			});
		});

		$(function() {
			$( "#datepicker" ).datepicker();
		});

		function verif_form(f){ //vérification du formulaire avant l'envoie au serveur
			var dateOk = verifDate(f.date);
			var expOk = verifSelect(f.exp);
			var locOk = verif(f.loc);
			var produitOk = verif(f.produit);
			var qteOk = verif(f.qte);
			var resultOk = verif(f.result);

			var photosOk = verif_photo(f,num,"fichierp");
			if(dateOk && expOk && locOk && produitOk && qteOk && resultOk && photosOk){
				return true;
			}
			else{
				alert("Veuillez remplir correctement tous les champs");
				return false;
			}
		}

		function verif_photo(f,temp,nomp){
			var cpt=0;
			var listeExt2 = new Array('bmp','jpg','jpeg','png','gif');
			for (var i=1; i<temp; i++){
				var photo = f.elements["fichierp"+i].value;
				if(photo.value!=""){
					var fichierOk = verifFileExtension(f.elements["fichierp"+i],listeExt2);
					if(fichierOk){document.getElementById("erreur_fichierp"+i).style.display="none";}
					else{document.getElementById("erreur_fichierp"+i).style.display="inline";cpt++;}
				}
			}
			if(cpt==0){return true;}
			else{return false;}
		}
        </script>
    </head>

    <body>
		<?php include(dirname(dirname(dirname(__FILE__)))."/menu.php"); ?>

		<section id="main">
			<header>
				<h1>Saisie - Test d'induction animal <?php echo $code; ?></h1>
			</header>
			<?php include(dirname(dirname(__FILE__))."/menu_saisie.php"); ?>
			<section id="animal">
				<section id="contenu">

					<form id="organes" method="post" action="" enctype="multipart/form-data" onsubmit="return verif_form(this)">
					<h2>Informations générales</h2>
						<p>
							<label class="code2"><?php echo $message; ?></label><br/>
							<label class="label">Date du test:</label><input name="date" type="text" id="datepicker" class="box">
							<span class="code3" id="erreur_date">* Champ du type jj/mm/aaaa</span><br/>
							<label class="label">Expérimentateur:</label>
							<select class="box" name="exp">
								<option value="none">Sélection</option>
								<?php
									//remplissage du select avec la liste des utilisateurs inscrits
									$query = pg_query($idconnect,"SELECT DISTINCT (Prenom, Nom) as name FROM Utilisateur WHERE statut!='Visiteur' AND statut!='Collaborateur extérieur'");
									while ($back = pg_fetch_assoc($query)) {
										$temp =str_replace(',',' ',$back["name"]);
										$temp =str_replace('(','',$temp);
										$temp =str_replace(')','',$temp);
										echo "<option value=\"" . $temp."\">" . $temp."</option>\n";
									}
								?>
							</select><span class="code3" id="erreur_exp">* Sélectionner un expérimentateur</span><br/>
							<label class="label">Produit injecté:</label>
							<select class="box" name="produitSelect" id="produitInjecte">
								<option value="none">Sélection</option>
								<?php
									//remplissage du select avec la liste des utilisateurs inscrits
									$query = pg_query($idconnect,"SELECT DISTINCT produit_injecte FROM test_induction");
									while ($back = pg_fetch_assoc($query)) {
										echo "<option value=\"" . $back["produit_injecte"]."\">" . $back["produit_injecte"]."</option>\n";
									}
								?>
								<option value="-1">Nouveau</option>
							</select><span class="code3" id="erreur_produit">* Sélectionner un produit</span>
							<input name="produit" id="newProduitInjecte" type="text" class="box" style="display:none">
							<span class="code3" id="erreur_produit">* Remplir le champ</span><br/>
							<label class="label">Quantité injectée:</label><input name="qte" type="text" class="box">
							<select class="box" name="unite" id="unite">
								<option value="none">Choissisez l'unité</option>
								<?php
									$query = pg_query($idconnect,"SELECT DISTINCT unite FROM test_induction");
									while ($back = pg_fetch_assoc($query)) {
										if($back["unite"] != "") {
											echo "<option value=\"" . $back["unite"]."\">" . $back["unite"]."</option>\n";
										}
									}
								?>
								<option value="-1">Ajouter nouvelle unité</option>
							</select>
							<input name="newUnite" id="newUnite" type="text" class="box" style="display:none">
							<span class="code3" id="erreur_qte">* Remplir le champ</span><br/>
							<label class="label">Localisation:</label><input name="loc" type="text" class="box">
							<span class="code3" id="erreur_loc">* Remplir le champ</span><br/>
							<label class="label">Résultat:</label><input name="result" type="text" class="box">
							</p>

							<h2>Photos de l'induction</h2>
							<p id="photos">
								<input type="button" name="bouton1" id="bouton1" value="Ajouter une photo"><br/>
								<input type="hidden" name="nombre_p" id="nombre_p" value="0"><br/>
							</p>

							<input type="submit" class="bouton" value="Valider le test" >
					</form>
				</section>
			</section>
		</section>
	</body>
</html>
